# build.py - PyInstaller打包脚本
import os
import shutil
import subprocess
import sys

def build_with_pyinstaller():
    """使用PyInstaller打包程序"""
    
    # 清理之前的构建文件
    for folder in ["build", "dist"]:
        if os.path.exists(folder):
            shutil.rmtree(folder)
    
    if os.path.exists("ETBOXUploader.spec"):
        os.remove("ETBOXUploader.spec")
    
    # PyInstaller打包命令
    cmd = [
        "pyinstaller",
        "--onefile",
        "--noconsole",  # 不显示控制台窗口
        "--name=ETBOXUploader",
        "--icon=etbox.ico",  # 如果有图标文件
        "main.py"
    ]
    
    print("开始打包ETBOX上传工具...")
    print("执行命令:", " ".join(cmd))
    
    try:
        result = subprocess.run(cmd, check=True, capture_output=True, text=True, encoding='utf-8')
        print("✅ 打包成功完成!")
        
        # 检查生成的文件
        exe_path = os.path.join("dist", "ETBOXUploader.exe")
        if os.path.exists(exe_path):
            file_size = os.path.getsize(exe_path) / (1024*1024)
            print(f"📦 生成文件: {exe_path}")
            print(f"📏 文件大小: {file_size:.2f} MB")
            
            # 创建使用说明
            create_readme()
        else:
            print("❌ 错误: 未找到生成的可执行文件")
            
    except subprocess.CalledProcessError as e:
        print(f"❌ 打包失败: {e}")
        if e.stderr:
            print(f"错误信息: {e.stderr}")
    except FileNotFoundError:
        print("❌ 错误: 未找到PyInstaller，请先安装: pip install pyinstaller")

def create_readme():
    """创建使用说明文档"""
    readme_content = """# ETBOX上传工具使用说明

## 功能特点
- 📤 带进度显示的文件上传
- 📌 右键菜单快速上传
- 🖥️ 美观的图形界面
- 🔧 服务状态检测
- 💬 消息发送功能

## 使用方法

### 1. 添加右键菜单
1. 运行程序
2. 点击"添加右键菜单"按钮
3. 现在可以在任何文件上右键选择"上传到ETBOX"

### 2. 手动上传文件
1. 运行程序
2. 点击"选择文件上传"
3. 选择要上传的文件
4. 观看上传进度

### 3. 发送消息
1. 在消息框中输入文本
2. 点击"发送消息"
3. 消息将保存到ETBOX-MSG.txt并用记事本打开

## 系统要求
- Windows 7/10/11
- ETBOX服务运行在8812端口

## 技术支持
确保ETBOX服务正常运行：
- 服务地址: http://127.0.0.1:8812
- 防火墙放行8812端口
"""
    
    with open("使用说明.txt", "w", encoding="utf-8") as f:
        f.write(readme_content)
    print("📖 已创建使用说明文档: 使用说明.txt")

if __name__ == "__main__":
    print("=" * 50)
    print("      ETBOX上传工具 - 打包程序")
    print("=" * 50)
    
    if not os.path.exists("main.py"):
        print("❌ 错误: 未找到main.py文件")
        input("按回车键退出...")
        sys.exit(1)
    
    build_with_pyinstaller()
    print("\n🎉 打包过程完成!")
    input("按回车键退出...")